#-*-coding:utf-8 -*-
# 众生平等，2019猪年大吉


from pyspark import SparkConf,SparkContext
from pyspark.sql import SQLContext

sc = SparkContext("local","dfSample")
sqlContext=SQLContext(sc)

## DataFrame 查询常用API ##


# 读取csv为DataFrame
product_df=sqlContext.read.csv("C:\\Users\\Desktop\\product.csv",header='true',inferSchema=True, encoding='utf-8')

# 创建临时表
product_df.createTempView("product")

##################################查#############################

# show函数内可用int类型指定要打印的行数：
product_df.show()
product_df.show(10)


# 以树的形式打印schema
product_df.printSchema()


# 获取头几行到本地（driver端，即提交的服务器）
product_list = product_df.head(3)
print product_list


# 查询总行数，返回此DataFrame中的行数：
print product_df.count()


# 以列表形式返回所有列名称。
print product_df.columns


# 查询某列为null的行：
# filter()
#使用给定的条件过滤行。where()是filter()的别名。
#参数：condition - 类型的一列.BooleanType或一个SQL表达式的字符串。
from pyspark.sql.functions import isnull
product_df.filter(isnull("id")).show()

# 输出list类型，list中每个元素是Row类：
# 数据会被加载到driver端（即提交的服务器）
# 返回一个Array对象
list = product_df.collect()
print list

# 查询概况
product_df.describe().show()



#sqlContext.sql("select * from product").show()


